columnviewcolumn: Add private api to set the position
authorMatthias Clasen <mclasen@redhat.com>
Fri, 5 Jun 2020 16:39:48 +0000 (12:39 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 5 Jun 2020 17:28:44 +0000 (13:28 -0400)
This is needed to make columns reorder their cells when
their position in the column views list of columns
changes.

gtk/gtkcolumnviewcolumn.c
gtk/gtkcolumnviewcolumnprivate.h

index 056793190553bfe1be59e55247f91b5d74f0b0f4..dd8a4cd3a46abe21cdc3a2c34a48640032d3df71 100644 (file)
@@ -625,6 +625,25 @@ gtk_column_view_column_set_column_view (GtkColumnViewColumn *self,
   g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COLUMN_VIEW]);
 }
 
+void
+gtk_column_view_column_set_position (GtkColumnViewColumn *self,
+                                     guint                position)
+{
+  GtkColumnViewCell *cell;
+
+  gtk_list_item_widget_reorder_child (gtk_column_view_get_header_widget (self->view),
+                                      self->header,
+                                      position);
+
+  for (cell = self->first_cell; cell; cell = gtk_column_view_cell_get_next (cell))
+    {
+      GtkListItemWidget *list_item;
+
+      list_item = GTK_LIST_ITEM_WIDGET (gtk_widget_get_parent (GTK_WIDGET (cell)));
+      gtk_list_item_widget_reorder_child (list_item, GTK_WIDGET (cell), position);
+    }
+}
+
 /**
  * gtk_column_view_column_get_factory:
  * @self: a #GtkColumnViewColumn
index 2fa9afa98953f4c117e8f45619d438715f896155..d71bc8a9dd1207407f04d765ebd816d92cc93d58 100644 (file)
@@ -28,6 +28,9 @@
 void                    gtk_column_view_column_set_column_view          (GtkColumnViewColumn    *self,
                                                                          GtkColumnView          *view);
 
+void                    gtk_column_view_column_set_position             (GtkColumnViewColumn    *self,
+                                                                         guint                   position);
+
 void                    gtk_column_view_column_add_cell                 (GtkColumnViewColumn    *self,
                                                                          GtkColumnViewCell      *cell);
 void                    gtk_column_view_column_remove_cell              (GtkColumnViewColumn    *self,